package com.credithc.signature.manager.utils;

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

/**
 * @desc: <br/>
 * @author: Jingbo Hu<br/>
 * @time：2020年05⽉29⽇<br/>
 * @version：v1.0.0<br>
 */
public class ImageToPdfUtil {

    /**
     * 单张图片转PDF
     *
     * @param imagePath
     * @param pdfPath
     */
    public static void oneToPdf(String imagePath, String pdfPath) {
        try {
            BufferedImage img = ImageIO.read(new File(imagePath));
            FileOutputStream fos = new FileOutputStream(pdfPath);
            Document doc = new Document(PageSize.A4, 0, 0, 0, 0);
            doc.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
            Image image = Image.getInstance(imagePath);
            PdfWriter.getInstance(doc, fos);
            doc.open();
            doc.add(image);
            doc.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 多张图片转PDF
     *
     * @param pdfPath
     * @param imagesPath
     * @throws Exception
     */
    public static void moreToPdf(String pdfPath, String imagesPath) throws Exception {
        File file = new File(pdfPath);
        // 第一步：创建一个document对象
        Document document = new Document(PageSize.A4, 0, 0, 0, 0);
        document.setMargins(0, 0, 0, 0);
        // 第二步：创建一个PdfWriter实例
        FileOutputStream outputStream = new FileOutputStream(file);
        PdfWriter.getInstance(document, outputStream);
        // 第三步：打开文档。
        document.open();
        // 第四步：在文档中增加图片。
        File files = new File(imagesPath);
        String[] images = files.list();
        int len = images.length;

        for (int i = 0; i < len; i++) {
            if (images[i].toLowerCase().endsWith(".bmp") || images[i].toLowerCase().endsWith(".jpg")
                    || images[i].toLowerCase().endsWith(".jpeg")
                    || images[i].toLowerCase().endsWith(".gif")
                    || images[i].toLowerCase().endsWith(".png")) {
                String temp = imagesPath + File.separator + images[i];
                Image img = Image.getInstance(temp);
                img.setAlignment(Image.ALIGN_CENTER);
                // 根据图片大小设置页面，一定要先设置页面，再newPage（），否则无效
                document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
                document.newPage();
                document.add(img);
            }
        }
        // 第五步：关闭文档。
        document.close();
        outputStream.close();
    }

    public static void main(String[] args) throws Exception {
        String pdfPath = "D:\\123\\test.pdf";
        String imagePath = "D:\\123";
        moreToPdf(pdfPath, imagePath);
    }
}
